﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities.Auditing;

namespace Acme.BookStore.Purchase.NotificationOrder
{
    public class NotificationOrders : AuditedAggregateRoot<Guid>
    {
        /// <summary>
        /// 通知单号（主键场景：若需自增或其他约束，结合 ORM 配置）
        /// </summary>
        public string NotificationOrderNo { get; set; }

        /// <summary>
        /// 客户编码
        /// </summary>
        public string CustomerCode { get; set; }

        /// <summary>
        /// 客户名称
        /// </summary>
        public string CustomerName { get; set; }

        /// <summary>
        /// 通知单状态（可枚举：如 待收货、已完成 等，需结合业务扩展）
        /// </summary>
        public string NotificationStatus { get; set; }

        /// <summary>
        /// 商品编码
        /// </summary>
        public string ProductCode { get; set; }

        /// <summary>
        /// 商品名称
        /// </summary>
        public string ProductName { get; set; }

        /// <summary>
        /// 通知单数量
        /// </summary>
        public decimal NotificationQty { get; set; }

        /// <summary>
        /// 验收数量
        /// </summary>
        public decimal ReceivedQty { get; set; }

        /// <summary>
        /// 单位（如：个、箱）
        /// </summary>
        public string Unit { get; set; }

        /// <summary>
        /// 体积 CM3
        /// </summary>
        public decimal VolumeCm3 { get; set; }

        /// <summary>
        /// 重量 KG
        /// </summary>
        public decimal WeightKg { get; set; }

        /// <summary>
        /// 客户订单号
        /// </summary>
        public string CustomerOrderNo { get; set; }

        /// <summary>
        /// 基本单位数量
        /// </summary>
        public decimal BaseUnitQty { get; set; }

        /// <summary>
        /// 基本单位（如：PCS）
        /// </summary>
        public string BaseUnit { get; set; }

        /// <summary>
        /// 生产日期
        /// </summary>
        public DateTime ProductionDate { get; set; }

        protected NotificationOrders()
        {
        }
        public NotificationOrders(Guid id, string notificationOrderNo, string customerCode, string customerName, string notificationStatus, string productCode, string productName, decimal notificationQty, decimal receivedQty, string unit, decimal volumeCm3, decimal weightKg, string customerOrderNo, decimal baseUnitQty, string baseUnit, DateTime productionDate) : base(id)
        {
            NotificationOrderNo = notificationOrderNo;
            CustomerCode = customerCode;
            CustomerName = customerName;
            NotificationStatus = notificationStatus;
            ProductCode = productCode;
            ProductName = productName;
            NotificationQty = notificationQty;
            ReceivedQty = receivedQty;
            Unit = unit;
            VolumeCm3 = volumeCm3;
            WeightKg = weightKg;
            CustomerOrderNo = customerOrderNo;
            BaseUnitQty = baseUnitQty;
            BaseUnit = baseUnit;
            ProductionDate = productionDate;
        }
    }
}
